home *** CD-ROM | disk | FTP | other *** search
/ Chip 2007 January, February, March & April / Chip-Cover-CD-2007-02.iso / Pakiet bezpieczenstwa / mini Pentoo LiveCD 2006.1 / mpentoo-2006.1.iso / livecd.squashfs / usr / lib / python2.4 / test / test_pep292.pyo (.txt) < prev    next >
Python Compiled Bytecode  |  2005-10-18  |  9KB  |  195 lines

  1. # Source Generated with Decompyle++
  2. # File: in.pyo (Python 2.4)
  3.  
  4. import unittest
  5. from string import Template
  6.  
  7. class Bag:
  8.     pass
  9.  
  10.  
  11. class Mapping:
  12.     
  13.     def __getitem__(self, name):
  14.         obj = self
  15.         for part in name.split('.'):
  16.             
  17.             try:
  18.                 obj = getattr(obj, part)
  19.             continue
  20.             except AttributeError:
  21.                 raise KeyError(name)
  22.                 continue
  23.             
  24.  
  25.         
  26.         return obj
  27.  
  28.  
  29.  
  30. class TestTemplate(unittest.TestCase):
  31.     
  32.     def test_regular_templates(self):
  33.         s = Template('$who likes to eat a bag of $what worth $$100')
  34.         self.assertEqual(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of ham worth $100')
  35.         self.assertRaises(KeyError, s.substitute, dict(who = 'tim'))
  36.  
  37.     
  38.     def test_regular_templates_with_braces(self):
  39.         s = Template('$who likes ${what} for ${meal}')
  40.         d = dict(who = 'tim', what = 'ham', meal = 'dinner')
  41.         self.assertEqual(s.substitute(d), 'tim likes ham for dinner')
  42.         self.assertRaises(KeyError, s.substitute, dict(who = 'tim', what = 'ham'))
  43.  
  44.     
  45.     def test_escapes(self):
  46.         eq = self.assertEqual
  47.         s = Template('$who likes to eat a bag of $$what worth $$100')
  48.         eq(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of $what worth $100')
  49.         s = Template('$who likes $$')
  50.         eq(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes $')
  51.  
  52.     
  53.     def test_percents(self):
  54.         eq = self.assertEqual
  55.         s = Template('%(foo)s $foo ${foo}')
  56.         d = dict(foo = 'baz')
  57.         eq(s.substitute(d), '%(foo)s baz baz')
  58.         eq(s.safe_substitute(d), '%(foo)s baz baz')
  59.  
  60.     
  61.     def test_stringification(self):
  62.         eq = self.assertEqual
  63.         s = Template('tim has eaten $count bags of ham today')
  64.         d = dict(count = 7)
  65.         eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
  66.         eq(s.safe_substitute(d), 'tim has eaten 7 bags of ham today')
  67.         s = Template('tim has eaten ${count} bags of ham today')
  68.         eq(s.substitute(d), 'tim has eaten 7 bags of ham today')
  69.  
  70.     
  71.     def test_SafeTemplate(self):
  72.         eq = self.assertEqual
  73.         s = Template('$who likes ${what} for ${meal}')
  74.         eq(s.safe_substitute(dict(who = 'tim')), 'tim likes ${what} for ${meal}')
  75.         eq(s.safe_substitute(dict(what = 'ham')), '$who likes ham for ${meal}')
  76.         eq(s.safe_substitute(dict(what = 'ham', meal = 'dinner')), '$who likes ham for dinner')
  77.         eq(s.safe_substitute(dict(who = 'tim', what = 'ham')), 'tim likes ham for ${meal}')
  78.         eq(s.safe_substitute(dict(who = 'tim', what = 'ham', meal = 'dinner')), 'tim likes ham for dinner')
  79.  
  80.     
  81.     def test_invalid_placeholders(self):
  82.         raises = self.assertRaises
  83.         s = Template('$who likes $')
  84.         raises(ValueError, s.substitute, dict(who = 'tim'))
  85.         s = Template('$who likes ${what)')
  86.         raises(ValueError, s.substitute, dict(who = 'tim'))
  87.         s = Template('$who likes $100')
  88.         raises(ValueError, s.substitute, dict(who = 'tim'))
  89.  
  90.     
  91.     def test_delimiter_override(self):
  92.         
  93.         class PieDelims(Template):
  94.             delimiter = '@'
  95.  
  96.         s = PieDelims('@who likes to eat a bag of @{what} worth $100')
  97.         self.assertEqual(s.substitute(dict(who = 'tim', what = 'ham')), 'tim likes to eat a bag of ham worth $100')
  98.  
  99.     
  100.     def test_idpattern_override(self):
  101.         
  102.         class PathPattern(Template):
  103.             idpattern = '[_a-z][._a-z0-9]*'
  104.  
  105.         m = Mapping()
  106.         m.bag = Bag()
  107.         m.bag.foo = Bag()
  108.         m.bag.foo.who = 'tim'
  109.         m.bag.what = 'ham'
  110.         s = PathPattern('$bag.foo.who likes to eat a bag of $bag.what')
  111.         self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
  112.  
  113.     
  114.     def test_pattern_override(self):
  115.         
  116.         class MyPattern(Template):
  117.             pattern = '\n            (?P<escaped>@{2})                   |\n            @(?P<named>[_a-z][._a-z0-9]*)       |\n            @{(?P<braced>[_a-z][._a-z0-9]*)}    |\n            (?P<invalid>@)\n            '
  118.  
  119.         m = Mapping()
  120.         m.bag = Bag()
  121.         m.bag.foo = Bag()
  122.         m.bag.foo.who = 'tim'
  123.         m.bag.what = 'ham'
  124.         s = MyPattern('@bag.foo.who likes to eat a bag of @bag.what')
  125.         self.assertEqual(s.substitute(m), 'tim likes to eat a bag of ham')
  126.         
  127.         class BadPattern(Template):
  128.             pattern = '\n            (?P<badname>.*)                     |\n            (?P<escaped>@{2})                   |\n            @(?P<named>[_a-z][._a-z0-9]*)       |\n            @{(?P<braced>[_a-z][._a-z0-9]*)}    |\n            (?P<invalid>@)                      |\n            '
  129.  
  130.         s = BadPattern('@bag.foo.who likes to eat a bag of @bag.what')
  131.         self.assertRaises(ValueError, s.substitute, { })
  132.         self.assertRaises(ValueError, s.safe_substitute, { })
  133.  
  134.     
  135.     def test_unicode_values(self):
  136.         s = Template('$who likes $what')
  137.         d = dict(who = u't\xc3\xbfm', what = u'f\xc3\xbe\x0ced')
  138.         self.assertEqual(s.substitute(d), u't\xc3\xbfm likes f\xc3\xbe\x0ced')
  139.  
  140.     
  141.     def test_keyword_arguments(self):
  142.         eq = self.assertEqual
  143.         s = Template('$who likes $what')
  144.         eq(s.substitute(who = 'tim', what = 'ham'), 'tim likes ham')
  145.         eq(s.substitute(dict(who = 'tim'), what = 'ham'), 'tim likes ham')
  146.         eq(s.substitute(dict(who = 'fred', what = 'kung pao'), who = 'tim', what = 'ham'), 'tim likes ham')
  147.         s = Template('the mapping is $mapping')
  148.         eq(s.substitute(dict(foo = 'none'), mapping = 'bozo'), 'the mapping is bozo')
  149.         eq(s.substitute(dict(mapping = 'one'), mapping = 'two'), 'the mapping is two')
  150.  
  151.     
  152.     def test_keyword_arguments_safe(self):
  153.         eq = self.assertEqual
  154.         raises = self.assertRaises
  155.         s = Template('$who likes $what')
  156.         eq(s.safe_substitute(who = 'tim', what = 'ham'), 'tim likes ham')
  157.         eq(s.safe_substitute(dict(who = 'tim'), what = 'ham'), 'tim likes ham')
  158.         eq(s.safe_substitute(dict(who = 'fred', what = 'kung pao'), who = 'tim', what = 'ham'), 'tim likes ham')
  159.         s = Template('the mapping is $mapping')
  160.         eq(s.safe_substitute(dict(foo = 'none'), mapping = 'bozo'), 'the mapping is bozo')
  161.         eq(s.safe_substitute(dict(mapping = 'one'), mapping = 'two'), 'the mapping is two')
  162.         d = dict(mapping = 'one')
  163.         raises(TypeError, s.substitute, d, { })
  164.         raises(TypeError, s.safe_substitute, d, { })
  165.  
  166.     
  167.     def test_delimiter_override(self):
  168.         eq = self.assertEqual
  169.         raises = self.assertRaises
  170.         
  171.         class AmpersandTemplate(Template):
  172.             delimiter = '&'
  173.  
  174.         s = AmpersandTemplate('this &gift is for &{who} &&')
  175.         eq(s.substitute(gift = 'bud', who = 'you'), 'this bud is for you &')
  176.         raises(KeyError, s.substitute)
  177.         eq(s.safe_substitute(gift = 'bud', who = 'you'), 'this bud is for you &')
  178.         eq(s.safe_substitute(), 'this &gift is for &{who} &')
  179.         s = AmpersandTemplate('this &gift is for &{who} &')
  180.         raises(ValueError, s.substitute, dict(gift = 'bud', who = 'you'))
  181.         eq(s.safe_substitute(), 'this &gift is for &{who} &')
  182.  
  183.  
  184.  
  185. def test_main():
  186.     test_support = test_support
  187.     import test
  188.     test_classes = [
  189.         TestTemplate]
  190.     test_support.run_unittest(*test_classes)
  191.  
  192. if __name__ == '__main__':
  193.     test_main()
  194.  
  195.